const express=require('express')
const db=require('./../libs/DBhelper')
// const md5=require('md5')
const fs=require('fs')
const path=require('path')

//配置路由文件
const apiRoute = express.Router()


//创建登陆路径  注册
apiRoute.post("/reg", (request, response, next) => {
    //1. 处理图片上传的文件
    var fileObj = request.files[0]   //拿到图片的一些信息  下标为0就是才上传过去的图片的信息
    var newpath = fileObj.path + path.extname(fileObj.originalname)      //把图片的地址和获取到的扩展名进行拼接

    fs.rename(request.files[0].path, newpath, (err) => {      //用fs模块修改名字
        if (err) {
            response.json({
                msg: "图片上传失败",
                err: err.message
            })
        } else {                    //图片上传成功了,就把信息保存到数据库

            //准备sql语句 (插入)
            var sql = "INSERT INTO users (u_name,u_pwd,u_tel,u_email,u_img)VALUES(?,?,?,?,?)"
            //准备参数
            var params = [
                request.body.u_name,
                request.body.u_pwd,
                request.body.u_tel,
                request.body.u_email,
                newpath
            ]
            // console.log(request.body)

            db.exec(sql, params, (err, result) => {
                if (err) {
                    response.json({
                        msg: "注册失败",
                        status: -1
                    })

                    // console.log("注册失败")

                    // console.log(err+"6666666")

                    //注册失败把上传的图片删除
                    fs.unlinkSync(newpath)
                    return
                }
                // console.log("注册成功")
                response.json({
                    msg: "注册成功",
                    status: 1
                })

            })
        }
    })
})



//登陆
apiRoute.post("/login", (request, response, next) => {

    //准备sql语句
    var sql = "SELECT u_id,u_name,u_pwd,u_tel,u_email,u_img FROM users WHERE u_name=? AND u_pwd=? AND u_status=1"
    //准备传输参数
    var params = [request.body.uname, request.body.upwd]

    db.exec(sql, params, (err, result) => {
        if (err) {
            response.json({
                msg: "登陆失败",
                status: -1
                // err:err.message
            })
            return
        }

        if (result.length >= 1) {
            response.json({
                msg: "登陆成功",
                status: 1,
                data: result[0]   //把数据传到local后台
            })
        } else {
            response.json({
                msg: "登陆失败",
                status: -1
                // err:err.message
            })
        }
    })
})



//产品列表
apiRoute.get("/index1", (request, response, next) => {
    var goodsStr = fs.readFileSync("./data/list.json").toString()   //得到商品列表里面的5个对象
    // console.log(goodsStr)
    // console.log('45646546666')

    response.end(goodsStr)   //纯文本用end返回出去
})


//产品列表
apiRoute.get("/goods/:id", (request, response, next) => {
    var goodsStr = fs.readFileSync("./data/list.json", { encoding: "utf-8" }).toString()   //得到商品列表里面的3个对象

    var resultObj = JSON.parse(goodsStr).filter((el) => {      //转成对象然后遍历

        return el.p_id == request.params.id         //params拿到query前面的id

    })
    response.json(resultObj)    //非纯文本可以用json返回出去
})

//加购接口
apiRoute.post("/addcart1", (request, response, next) => {
    //加入购物车需要的数据
    //商品id 用户id 商品名字 商品数量 商品价格 商品主图
    // console.log(request.body);



    //根据用户id和商品id,查询到商品是否存在  如果存在,就改变数量
    var querySelect = "SELECT * FROM carts WHERE u_id=? AND p_id=?"
    var queryParams = [request.body.u_id, request.body.p_id]

    db.exec(querySelect, queryParams, (err, result) => {
        if (err) {
            response.json({
                msg: "查询id出错了",
                err: err.message,
                status: -2
            })
            return
        }
        if (result.length >= 1) {         //来判断商品是否已经存在了

            var updateSql = "UPDATE carts SET p_number=p_number+?,p_total=p_number*p_price WHERE u_id=? AND p_id=?"
            var updatePrams = [
                request.body.p_num,
                request.body.u_id,
                request.body.p_id
            ]

            db.exec(updateSql, updatePrams, (err, result) => {
                if (err) {
                    response.json({
                        msg: "判断商品出错了",
                        err: err.message,
                        status: -2
                    })
                    return
                }
                if (result.affectedRows == 1) {
                    response.json({
                        msg: "商品修改成功",
                        status: 2
                    })
                } else {
                    response.json({
                        msg: "商品修改失败",
                        status: -1
                    })
                }
            })




        } else {


            var sql = "INSERT INTO carts (u_id,p_id,p_name,p_price,p_number,p_img,p_total) VALUES (?,?,?,?,?,?,?)"
            var params = [
                request.body.u_id,
                request.body.p_id,
                request.body.p_name,
                request.body.p_price,
                request.body.p_num,
                request.body.p_img_index,
                request.body.p_price * request.body.p_num,        //总价格的数据为  价格X数量
            ]

            //让商品的信息加入到数据库里面
            db.exec(sql, params, (err, result) => {
                if (err) {
                    response.json({
                        msg: "加入数据库出错了",
                        err: err.message,
                        status: -2
                    })
                    return
                }

                if (result.affectedRows >= 1) {
                    response.json({
                        msg: "加入购物车成功",
                        status: 1
                    })
                } else {
                    response.json({
                        msg: "加入购物车失败",
                        status: -1
                    })
                }
            })

        }
    })





    //异常捕获 出错了还能继续进行
    // try {

    // var result = await db.execAsync(sql, params)

    // if (result.affectedRows >= 1) {
    //     response.json({
    //         msg: "加入购物车成功",
    //         status: 1
    //     })
    // }else{
    //     response.json({
    //         msg: "加入购物车失败",
    //         status: -1
    //     })
    // }


    // } catch (err) {
    //     response.json({
    //         msg: "加入失败",
    //         err: err.message,
    //         status: -2
    //     })
    // }


})


//拿到数据库数据
apiRoute.get("/addcart", (request, response, next) => {

    // console.log(request.query);


    var sql = "SELECT * FROM carts WHERE u_id=?"
    var params = [request.query.u_id]
    // console.log(params)

    db.exec(sql, params, (err, result) => {
        if (err) {
            response.json({
                msg: "查询id导数据出错了",
                err: err.message,
                status: -2
            })
            return
        }

        if (result.length >= 1) {
            response.json({
                msg: "获取到了商品",
                // err: err.message,
                status: 1,
                data: result
            })
        } else {
            response.json({
                msg: "没有获取到商品",
                // err: err.message,
                status: -1
            })
        }


    })

})


//在购物车页面修改后,更新数据库
apiRoute.get("/addcart2", (request, response, next) => {

    // 获取到商品后,然后修改
    var Sql = "UPDATE carts SET p_number=?,p_total=p_number*p_price WHERE u_id=? AND p_id=?"
    // console.log(request.query)
    var Params = [
        request.query.p,
        request.query.u_id,
        request.query.s
    ]

    db.exec(Sql, Params, (err, result) => {
        if (err) {
            response.json({
                msg: "判断商品出错了",
                err: err.message,
                status: -2
            })
            return
        }
        // console.log(result)
        if (result.affectedRows >= 1) {
            response.json({
                msg: "商品修改成功",
                status: 2,
            })

        } else {
            response.json({
                msg: "商品修改失败",
                status: -1
            })
        }

    })

})



//修改完成后,再查询
apiRoute.get("/addcart3", (request, response, next) => {

    
    //修改成功后,再查询返回出去数据
    var sql = "SELECT * FROM carts WHERE u_id=?"
    var params = [
        request.query.u_id
    ]

    db.exec(sql, params, (err, result) => {
        if (err) {
            response.json({
                msg: "查询商品出错了",
                err: err.message,
                status: -2
            })
        }
        if (result.length >= 1) {
            response.json({
                msg: "获取到了商品",
                status: 1,
                data: result
            })
        } else {
            response.json({
                msg: "没有获取到商品",
                status: -1
            })
        }


    })
})


//删除一个产品后,修改数据库内容
apiRoute.get("/addcart4", (request, response, next) =>{

    var sql = "DELETE FROM `carts` WHERE u_id=? AND p_id=?"
    var params = [
        request.query.u_id,
        request.query.p_id
    ]

    db.exec(sql, params, (err, result) => {
        if (err) {
            response.json({
                msg: "删除商品出错了",
                err: err.message,
                status: -2
            })
        }
        if (result.affectedRows >= 1) {
            response.json({
                msg: "删除了商品",
                status: 1,
                data: result
            })
        } else {
            response.json({
                msg: "没有获取到商品",
                status: -1
            })
        }


    })
})

//暴露api路由对象
module.exports = {
    apiRoute
}